MBL
Go / Проекты / Тестовое задание / Avito.Кухня — тестовое задание Avito
Go сложный

Avito.Кухня — тестовое задание Avito

projectsavitokafkapostgres

Реальное тестовое задание на бэкенд-стажировку Avito: два Go-сервиса (kitchen-service — заказы, establishment-service — заведение), Postgres, Kafka, transactional outbox, идемпотентность на пяти разных уровнях. Полный разбор — уже готовая отдельная секция KB, здесь только точка входа и схема.

Полная архитектурная схема (archify) →

Где полный разбор

Весь детальный контент по этому проекту уже написан отдельным деревом — не дублирую здесь, а указываю прямо на него:

  • «Защита тестового Avito на реальном проекте: Avito.Кухня» — архитектура, маппинг ошибок, in-memory vs Postgres, 100 RPS, выбор Kafka
  • Блокировки и гонки на списании остатка, идемпотентность (5 разных механизмов), transactional outbox + DLQ, тестовая стратегия, каталог реальных найденных багов, реестр осознанных ограничений — всё в той же папке avito/Тестовое задание/
  • Дополнительные deep dive: Kafka consumer groups/ребалансировка/exactly-once, Postgres изоляция транзакций/блокировки — там же

Стек одной строкой

Go, Postgres (по БД на сервис), Kafka (3 топика: orders.new, orders.status_updated, orders.status_updated.dlq), transactional outbox + relay, SELECT ... FOR UPDATE + сравнение статуса для идемпотентности, атомарный UPDATE ... WHERE stock >= qty для списания остатка.

Как усвоено?